package cn.edu.ecut.synchronize;

/**
 * 1、同步代码快: 被synchronized修饰的局部代码块
 * 2、在synchronized关键字之后的 小括号 中书写的 引用变量 就是 同步锁 ( 就是多个线程竞争的资源 )
 * 3、当多个线程竞争同一个资源时，谁获取到该资源谁就可以执行同步代码块
 */
public class SynchronizationTest1 {

	public static void main(String[] args) {
		
		Object lock = new Object();
		
		Runnable r = new Runnable() {
			@Override
			public void run() {
				// synchronized( x ) { /* 同步代码快 */  } 
				synchronized ( lock ) {
					System.out.println( Thread.currentThread() + " begin" );
					try {
						Thread.sleep( 5000 );
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					System.out.println( Thread.currentThread() + " end");
				}
			}
		};
		
		Thread t = new Thread( r , "first" );
		Thread h = new Thread( r , "second" );
		Thread e = new Thread( r , "third" );
		
		h.start();
		t.start();
		e.start();

	}

}
